package weixin.utils;

import java.util.ArrayList;
import java.util.List;


/**
 * @author：朱笑    
 * @note：用户utils
 * @date：2016年9月1日 
 */
public class UserUtils {
	/**
	 * @author：朱笑    
	 * @note：
	 * @date：2016年9月1日 
	 */
	public static class groupManageUtils{
		/**
		 *@note: 创建分组	
		 *@date: 2016年9月1日 下午8:42:54
		 *@param access_token
		 *@param groupName 分组名称
		 *@param RequestUtils
		 *@return
		 */
		public static String createGroup(String access_token,String groupName){
			String url="https://api.weixin.qq.com/cgi-bin/groups/create?access_token="+access_token;
			String json="{\"group\":{\"name\":\""+groupName+"\"}}";
			String result=RequestUtils.doPost(url, json);
//			{"group":{"id":100,"name":"测试一号"}}
			return result;
		}
		/**
		 *@note: 查询所有分组	
		 *@date: 2016年9月1日 下午8:45:34
		 *@param access_token
		 *@param RequestUtils
		 *@return
		 */
		public static String queryAllGroup(String access_token){
			String url="https://api.weixin.qq.com/cgi-bin/groups/get?access_token="+access_token;
			String result=RequestUtils.doGet(url);
//			{"groups":[{"id":0,"name":"未分组","count":3},{"id":1,"name":"黑名单","count":0},{"id":2,"name":"星标组","count":0},{"id":100,"name":"测试一号","count":0}]}
			return result;
		}
		
		/**
		 *@note: 查询用户所在分组	
		 *@date: 2016年9月1日 下午8:56:53
		 *@param access_token
		 *@param openid
		 *@param RequestUtils
		 *@return
		 */
		public static String queryUserGroup(String access_token,String openid){
			String url="https://api.weixin.qq.com/cgi-bin/groups/getid?access_token="+access_token;
			String json="{\"openid\":\""+openid+"\"}";
			String result=RequestUtils.doPost(url, json);
//			{"groupid":0}
			return result;
		}
		
		/**
		 *@note: 修改分组名	
		 *@date: 2016年9月1日 下午9:05:20
		 *@param access_token
		 *@param groupId 分组id
		 *@param name    分组名称
		 *@param RequestUtils
		 *@return
		 */
		public static String changeGroupName(String access_token,String groupId,String name){
			String url="https://api.weixin.qq.com/cgi-bin/groups/update?access_token="+access_token;
			String json="{\"group\":{\"id\":"+groupId+",\"name\":\""+name+"\"}}";
			String result=RequestUtils.doPost(url, json);
//			{"errcode": 0, "errmsg": "ok"}
			return result;
		}
		/**
		 *@note: 移动用户分组	
		 *@date: 2016年9月1日 下午9:39:06
		 *@param access_token
		 *@param openid
		 *@param to_groupid
		 *@param RequestUtils
		 *@return
		 */
		public static String moveUserGroup(String access_token,String openid,String to_groupid){
			String url="https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token="+access_token;
			String json="{\"openid\":\""+openid+"\",\"to_groupid\":"+to_groupid+"}";
			String result=RequestUtils.doPost(url, json);
//			{"errcode": 0, "errmsg": "ok"}
			return result;
		}
		
		/**
		 *@note: 批量移动用户分组	
		 *@date: 2016年9月1日 下午9:43:36
		 *@param access_token
		 *@param openidList 用户唯一标识符openid的列表（size不能超过50）
		 *@param to_groupid
		 *@param RequestUtils
		 *@return
		 */
		public static String moveBatchUserGroup(String access_token,List<String> openidList,String to_groupid){
			String url="https://api.weixin.qq.com/cgi-bin/groups/members/batchupdate?access_token="+access_token;
			String json="{\"openid_list\":"+openidList.toString()+",\"to_groupid\":"+to_groupid+"}";
			String result="";
			if(openidList.size()<=50){
				result=RequestUtils.doPost(url, json);
			}
//			{"errcode": 0, "errmsg": "ok"}
			return result;
		}
		/**
		 *@note: 删除分组(注意本接口是删除一个用户分组，删除分组后，所有该分组内的用户自动进入默认分组。 )
		 *@date: 2016年9月1日 下午9:46:27
		 *@param access_token
		 *@param gourpId
		 *@param RequestUtils
		 *@return
		 */
		public static String deleteGroup(String access_token,String gourpId){
			String url="https://api.weixin.qq.com/cgi-bin/groups/delete?access_token="+access_token;
			String json="{\"group\":{\"id\":"+gourpId+"}}";
			String result=RequestUtils.doPost(url, json);
//			{"errcode": 0, "errmsg": "ok"}
			return result;
		}
	}
	/**
	 *@note: 设置备注名	
	 *@date: 2016年9月1日 下午9:56:31
	 *@param access_token
	 *@param openid
	 *@param remark
	 *@param RequestUtils
	 *@return
	 */
	public static String setUserNote(String access_token,String openid,String remark){
		String url="https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token="+access_token;
		String json="{\"openid\":\""+openid+"\",\"remark\":\""+remark+"\"}";
		String result=RequestUtils.doPost(url, json);
//		{"errcode":0,"errmsg":"ok" }
		return result;
	}
	/**
	 * @author：朱笑    
	 * @note：用户信息utils
	 * @date：2016年9月1日 
	 */
	public static class userInfoUtils{
		/**
		 *@note: 获取用户基本信息	
		 *@date: 2016年9月1日 下午10:16:06
		 *@param access_token
		 *@param openid
		 *@param lang
		 *@param RequestUtils
		 *@return
		 */
		public static String getUserBaseInfo(String access_token,String openid,String lang){
			String url="https://api.weixin.qq.com/cgi-bin/user/info?access_token="+access_token+"&openid="+openid+"&lang="+lang;
			String result=RequestUtils.doGet(url);
			return result;
		}
		/**
		 *@note: 批量获取用户基本信息(开发者可通过该接口来批量获取用户基本信息。最多支持一次拉取100条。)
		 *@date: 2016年9月1日 下午10:24:03
		 *@param access_token
		 *@param openidList
		 *@param lang
		 *@param RequestUtils
		 *@return
		 */
		public static String batchGetUserBaseInfo(String access_token,List<String> openidList,String lang){
			String url="https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token="+access_token;
			if(openidList.size()>=100){
				return "";
			}
			List<String> params=new ArrayList<>();
			for(String openid:openidList){
				params.add("{\"openid\": \""+openid+"\", \"lang\": \""+lang+"\"}");
			}
			String json="{\"user_list\": "+params.toString()+"}";
			String result=RequestUtils.doPost(url, json);
			return result;
		}
	}
	
	/**
	 *@note: 	
	 *@date: 2016年9月2日 下午7:47:54
	 *@param access_token
	 *@param next_openid 
	 *@param RequestUtils
	 *@return
	 */
	public static String getUserList(String access_token,String next_openid){
		String url="https://api.weixin.qq.com/cgi-bin/user/get?access_token="+access_token+"&next_openid="+next_openid;
		String result=RequestUtils.doGet(url);
//		{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
//参数	说明
//total	关注该公众账号的总用户数
//count	拉取的OPENID个数，最大值为10000
//data	列表数据，OPENID的列表
//next_openid	拉取列表的最后一个用户的OPENID
//		{"errcode":40013,"errmsg":"invalid appid"}
		return result;
	}
}


/*
* 蕾姆老婆，not bug
*                             .   .....:;iri;.                               
*                              ;;irrss1r..;ri:.                            
*                       .,:.   , ,181,:.  :SS55hs;.                        
*                     .:h1. .  ,;iSGh:. .,:,i393Shr:.                      
*                   .. ,38Shr,ihSS5535:,;1sr5G3iirir;:.                    
*                     ;hSSSS55S55555SS33SS3GXGs...  ir:,.                  
*               . .; .riihh115555SSSSS555ris5Sr.,::i11i;:,                 
*               iSs;,;::r;:;srrr111sshsiii;;;hhir1;;iS31s1i                
*             . ;s.,;,,r:,:i:::;;;;;;ir;;;;i11rS39h5938G993h;              
*               ,.,:,,i:,:i:::;;;;;;;;riir1S31s159859G139399h,             
*           ..,,.,:,,;;::i;:;;;;;;;;i;s55Shr1Ssrs888SX9SGXX835;            
*           . ,:.:,,:i::ii:;;;i;;;;;si;h93i;sS1r5S8988&XXG89951            
*             ,..:,,r;::sr;;;rriiii;hs:ssS3ri3359h9XGG&AXGG89Sh.           
*             : ::.,s::;hs;;;s1r;iir31;r::58hh8388GG8GX&&G9999s.           
*             ;.r;.i1;:;S5;;;hSs;ii181i:..,iSS989398&8X&GXX8G9r.           
*            .r,11,s51;i33ri;581iir531h8XX83S5S89S8X898&GSG&85r.           
*            :1;h3;s9SiiS951i59hrrh5h5&GHA#@@#&99998h1h9Gh399h;.           
*            ,1s18hh99hs583S1hSh1h5hh:,.ih#MAG5S9333sirSG539isr            
*            ,r519953355533S555h5Ssi: . :h11;ir5SSs5r;;SSS95 :i.           
*             ;1SS8SSS15551155515s,  ..,,;iiris5Ss;r;rh9sSh, . :           
*             .i5399885rssri;iii;. ....,,::;;;r1iihhh985i1:    ,.          
*               i5S99X&5;;;:,...,........,,,,::,i38hh5r;:.,    ..          
*                :rh3988s,,,,.................,r35iir. .  .                
*     .,.         .,::r11;,........;;.......:r5;:. .                       
*    .,,:,               ..........,,....:i1555i:                          
*    :;;:;,      .            iri;:,.,;r155h1rhsr                          
*    ,;iii;       ,, ...   .,:s155S555SSh1shsrrsi                          
*    ,,::;is: ... .ii ,,    .:i:iiir1hi:;irsiiisr:                         
*   ,,::;;ih5: ....:r. ,,     :iii;;i;,,;iiiiiiiii;.            ....  .:;: 
*   :;;iir1hh1,     .;i..:,     ,i159X3S1;;;;;;ii;;;,.,,,,  .:;:,.  .ih1r: 
*   ,rrirs1hir1;  ..,8@i ,;,. .r1hss95X1SSi.,,::;;iiii:::.;r;;.    :h5hsi. 
*    :i;iir:.;i;. . i&5ir; .;.98r;;ri;&3 ;3h ..;;i;i..;::1r,      ;55h1r,  
*      :;ii.,;: .. :5i,;i;;r:ihs;;irrrhG3;85,:,;:.,ii,&8r:  . ;s.i51sr;:   
*      ,r1r, ,, ,:ir:,,...,,;s::::;;iisr8Ah i,;:i:ii;:X9;,...;55h5siii;:   
*       ihi  ..,i1i::,...   :;,,:ri;iii1si;;;:::,::::,9r  ..;sssh5hh1sr;   
*    . .,;,   irsr;;,,....,,;..,,:;;;r;ri.....   ..,:,5r.  .i;i;:55hh1s;   
*    ,,       ihi;:.       ,:....i;.,:,15:;,......,,,,i;...ii::..5511si    
*   .., 1,   s5;:,.       ,:....;:... hXi,       ,:;;:si;ih5:, :5:;1;     
*   .:SX3B3  .A8;:,.      ,i.....i: ...sS:        .,;issi,.s1r.:;. ;.      
*   :8HHH&As.8HXr;:.     .;i .  ;h,...;:5:        .,:i1Sssrr;i.,. ,        
*    1XAA&&&X&X&8r;;,. iS::;. .i11r,.::5&5        .,;r11rii;ii;   ,.       
*     S&AHAAA&&&AXSsri5Hhrs:.:h5hh5s:i;GHHh,    ..,;isS;S:;;S8:1&1. .      
*     1XX&&&&AAAHB#A89H9,i;;1&BM##MHi.9&HGGA1,::;;iisGHGHi SAA9XHBASr:.    
*    .5X&AAAAHBBHHAH8XHh:ii1sH@HAB#B,iH&B9XHH3srrshSXH&A&GSA&XA&AHHHXs.    
*     hGX&AHHBHHHAAAXSH&s.r5hSM@5,195.5H&A9A&AAX8&HBM&&&&&&A&&&&HBHA8i      
*   ,9X&AAAA&&A&&A&89A&5:Sh1A@M&XHMh:8AHG8H&&&AHHBHHHAAAAAHHHBBMHX1.       
*   sXAHA&&&AA&&H&&88&&S,sh3M#M#@MMG,9AAX8H&&A&&&&&AMMBHAAAAAHAA&r         
*  ,9&HA&&AA&&&HA&H3&&Xiih1X@MBHXH#G 3H&X8H&&AA&AAAAABBHHAAAAA&8s          
*  rG&&&AHA&&&HA&H&3AAS 1hhG#BM8:hh:i&H&88H&&&AA&AAAHAHHAHAAA&Xh           
*  iGG&AH&&&&AHAHHSGAHs:h19B#BB&XH5,;AHASXHA&&&HA&AAAH&AHHBAA&G1           
*  ,9X&A&&&&&HHHHGSAAA, sh8#MBBBMM@r 8HASGHHHA&AHA&&AHA&AHHBAX8:           
*   hX&&&&&&&HHHA8SAHG:ih15M#BBMMM&i;SHH98AHHHHHHHA&&HHAAHBBAX5            
*   .sSG&&&AHHHA&X5AH3 i1SGB#MXS&H.,:8AAG3AAHHAAHHHA&AHA&ABBAXi            
*      .3AHBHHA&&&S&AG:1h3A###Sr5Gr.,XAAX3A&AHHAAHHHHAHHAAHBAG:            
*     :h&HHHHH&&AH8GA&:s55M@##M###M::AAAX8A&&AHHAAAHHHHBHAHHAS             
*   ;5XBBMMBHAAAHH38&Ass539GAHMMMMh:1HAA8GA&&&AHA&&&AHHBBHH&S   
*/